package br.com.eventime.service;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.faces.model.SelectItem;
import javax.inject.Inject;

import br.com.eventime.dao.CidadeDao;
import br.com.eventime.dao.EstadoDao;
import br.com.eventime.dao.Parametros;
import br.com.eventime.entity.Cidade;
import br.com.eventime.entity.Estado;

@Stateless
public class CidadeService {

	@Inject
	private CidadeDao cidadeDao;
	
	@Inject
	private EstadoDao estadoDao;	
	

	public List<Cidade> getListCidade(Cidade cidade){
		if((cidade.getCodigo() != null && cidade.getCodigo() != 0)|| (cidade.getDescricao() != null )){
			Parametros<Integer> codigoCidade = new Parametros<Integer>();
			Parametros<String> descricaoCidade = new Parametros<String>();
			codigoCidade.setNome("codigo");
			codigoCidade.setValor(cidade.getCodigo());
			descricaoCidade.setNome("descricao");
			descricaoCidade.setValor(cidade.getDescricao()+"%");
			return cidadeDao.findToList("Cidade.findByCodeOrDesc", codigoCidade,descricaoCidade);
		}else {
			return cidadeDao.findToList("Cidade.findAll",new Parametros[0]);
		}
		
		
	}
	
	public List<Estado> getListEstado(Estado estado){
			return estadoDao.findToList("Estado.findAll",new Parametros[0]);
	}
	
	public List<SelectItem> getComboEstado() {
		List<SelectItem> comboEstados = new ArrayList<SelectItem>();
        for (Estado estado :  getListEstado(new Estado())) {
        	comboEstados.add(new SelectItem(estado.getCodigo(),estado.getDescricao()));
           
        }				
		return comboEstados;
	}
	
		
	public void insereAlteraCidade(Cidade cidade){
		cidadeDao.merge(cidade);
	}
	
	public void removeCidade(Cidade cidade){
		cidadeDao.delete(cidade, cidade.getCodigo());
	}
	
	public void setCidadeDao(CidadeDao cidadeDao) {
		this.cidadeDao = cidadeDao;
	}
	
}
